#include "sbi.h"
// QEMU中时钟的频率是10MHz, 也就是1秒钟相当于10000000个时钟周期。
unsigned long TIMECLOCK = 10000000;

unsigned long get_cycles() {
    long time;
    __asm__ volatile (
        "rdtime %0" // 通过指令rdtime读取当前时间。
        :"=r"(time)
        :
        :"memory"
    );
    return time;
}

void clock_set_next_event() {
    unsigned long next = get_cycles() + TIMECLOCK; // 计算下一次时钟中断的时间点。
    sbi_ecall(0,0,next,0,0,0,0,0); // 使用 sbi_ecall 来完成对下一次时钟中断的设置 
} 